package com.opal.jx.controller;

import com.opal.consts.WSC;
import com.opal.domain.R;
import com.opal.jx.entity.table.JxAssessBzcjZg;
import com.opal.jx.entity.table.JxDept;
import com.opal.jx.entity.table.JxEmp;
import com.opal.jx.service.JxEmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
@RequestMapping("jxEmp")
public class JxEmpController {

    @Autowired
    private JxEmpService jxEmpService;

    /**
     * 查询所有员工信息：所属组长、所属科长、所属、主管、格式化有用到
     * @return
     */
    @RequestMapping("selectAllJxEmp")
    @ResponseBody
    public Object selectAllJxEmp(){
        Object map= jxEmpService.selectJxEmpByCondition(new JxEmp());
        return map;
    }

    /**
     * 元素为jxempTable的edatagrid初始化数据
     * @return
     */
    @RequestMapping("selectJxEmp")
    @ResponseBody
    public Object selectJxEmpUseEayuiTable(int page,int rows,JxEmp jxEmp){
        Object map= jxEmpService.selectJxEmpUseEayuiTableService(page,rows,jxEmp);
        return map;
    }

    //此接口暂时未使用到
    @RequestMapping("queryJxempDataRefreshTable")
    @ResponseBody
    public Object queryJxempDataRefreshTable( JxEmp jxEmp){
        Object o=jxEmpService.queryJxempDataRefreshTable(jxEmp);
       return o;
    }

    /**
     * jxEmpTable表格中的删除触发此接口
     * @return
     */
    @RequestMapping("deleteJxEmp")
    @ResponseBody
    public R deleteJxEmp(JxEmp jxEmp){
        R r=jxEmpService.deleteJxEmp(jxEmp);
        return r;
    }

    /**
     * jxEmpTable表格中的保存触发此接口
     * @param jxEmp
     * @return
     */
    @RequestMapping("saveJxEmp")
    @ResponseBody
    public R saveJxEmp(JxEmp jxEmp){
        R r=jxEmpService.saveJxEmp(jxEmp);
        return r;
    }

    /**
     * jxEmpTable表格中的修改触发此接口
     * @param jxEmp
     * @return
     */
    @RequestMapping("updateJxEmp")
    @ResponseBody
    public R updateJxEmp(JxEmp jxEmp){
        R r=jxEmpService.updateJxEmp(jxEmp);
        return r;
    }

    /**
     * jxEmp页面一打开触发此接口：用于在表中的岗位的格式化成中文
     * @return
     */
    @RequestMapping("getjxPostAll")
    @ResponseBody
    public Object getjxPostAll(){
       Object map= jxEmpService.getjxPostAll();
        return map;
    }

    /**
     * 部门事件触发此接口：获取岗位信息
     * @param pkDept
     * @param pkOrg
     * @return
     */
    @RequestMapping("getJxEmpPost")
    @ResponseBody
    public Object getJxEmpPost(String pkDept,String pkOrg){
        Object object=jxEmpService.getJxEmpPostService(pkDept,pkOrg);
        return object;
    }

    /**
     * peiZhiCheJian_chenLiaoZhuGuan.html页面【新增】按钮中选中岗位触发此接口
     * @param jxEmp  postId：员工工号编码，pkDept：部门编码
     * @return
     */
    @RequestMapping("getEmpByPkDeptAndPostId")
    @ResponseBody
    public Object getEmpByPkDeptAndPostId(JxEmp jxEmp){
        List<JxEmp> jxEmps = jxEmpService.selectJxEmpByCondition(jxEmp);
        return jxEmps;
    }

    /**
     * 通过岗位名称模糊查询员工：如"技术组长、辅助组长"    "%组长%":此接口在员工表中的三个字段：所属组长、所属主管、所属科长字段初始化中使用
     * 注意：后台EasyuiDatagridServiceImpl.getEasyuiDatagridColumnService方法上定义
     * @param postName
     * @return
     */
    @RequestMapping("selectEmpByLikePostName")
    @ResponseBody
    public Object selectEmpByLikePostName(String postName,String pkDept){
        List<JxEmp> jxEmps = jxEmpService.selectEmpByLikePostName(postName,pkDept);
        return jxEmps;
    }

    /**
     * 获取所有的部门
     * @return
     */
    @RequestMapping("getAllJxDept")
    @ResponseBody
    public Object getAllJxDept(){
        List<JxDept> map= jxEmpService.getAllJxDeptService();
        return map;
    }

    /**
     * 根据岗位id获取总计划主管信息
     * @return
     */
    @RequestMapping("getZhuGuanInfo")
    @ResponseBody
    public List<JxAssessBzcjZg> getZhuGuanInfo(Long postId){
        List<JxAssessBzcjZg> JxAssessBzcjZgs= jxEmpService.getZhuGuanInfoService(postId);
        return JxAssessBzcjZgs;
    }

    /**
     * 根据组织查询部门
     * @return
     */
    @RequestMapping("getJxDeptByPkOrg")
    @ResponseBody
    public Object getJxDeptByPkOrg(String pkOrg){
        List<JxDept> map= jxEmpService.getJxDeptByPkOrgService(pkOrg);
        return map;
    }

    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public R exceptionMessage(Exception e){
        if (e instanceof DuplicateKeyException){
            return new R(WSC.REQUEST_ERROR,"添加失败：工号不能重复！");

        }
        return new R(WSC.REQUEST_ERROR,e.getMessage());
    }

}
